//
//  Int+To.swift
//  TTCOM-iOS
//
//  Created by Toj on 8/3/23.
//
// 时间单位转换

import Foundation

// 毫秒: Milliseconds, MS/ ms
// 秒  : Second, S/ s
// 分  : Minute, M/ m
// 时  : Hour, H/ h
// 天  : Day, D/ d

// MARK: - 高位 转 低位
public extension ExtInt where Self : BinaryInteger {
    
    // MARK: ？ 转 毫秒
    /// 秒 转 毫秒
    var to_sCms: Int64 {
        return Int64(self) * CMSToMS
    }
    
    // 分 转 毫秒
    var to_mCms: Int64 {
        return Int64(self) * CMMToMS
    }
    
    // 时 转 毫秒
    var to_hCms: Int64 {
        return Int64(self) * CMHToMS
    }
    
    // 天 转 毫秒
    var to_dCms: Int64 {
        return Int64(self) * CMDToMS
    }
    
    // MARK: ？ 转 秒
    // 分 转 秒
    var to_mCs: Int64 {
        return Int64(self) * CMMToS
    }
    
    // 时 转 秒
    var to_hCs: Int64 {
        return Int64(self) * CMHToS
    }
    
    // 天 转 秒
    var to_dCs: Int64 {
        return Int64(self) * CMDToS
    }
    
    // MARK: ？ 转 分
    // 时 转 分
    var to_hCm: Int64 {
        return Int64(self) * CMHToM
    }
    
    // 天 转 分
    var to_dCm: Int64 {
        return Int64(self) * CMDToM
    }
    
    // MARK: ？ 转 时
    // 天 转 时
    var to_dCh: Int64 {
        return Int64(self) * CMDToH
    }
}

// MARK: - 低位 转 高位
public extension ExtInt where Self : BinaryInteger {
    
    // MARK: 毫秒 转 ?
    // 毫秒 转 秒
    var to_msCs: Int64 {
        return Int64(self) / CMSToMS
    }
    
    // 毫秒 转 分
    var to_msCm: Int64 {
        return Int64(self) / CMMToMS
    }
    
    // 毫秒 转 时
    var to_msCh: Int64 {
        return Int64(self) / CMHToMS
    }
    
    // 毫秒 转 天
    var to_msCd: Int64 {
        return Int64(self) / CMDToMS
    }
    
    // MARK: 秒 转 ?
    // 秒 转 分
    var to_sCm: Int64 {
        return Int64(self) / CMMToS
    }
    
    // 秒 转 时
    var to_sCh: Int64 {
        return Int64(self) / CMHToS
    }
    
    // 秒 转 天
    var to_sCd: Int64 {
        return Int64(self) / CMDToS
    }
    
    // MARK: 分 转 ?
    // 分 转 时
    var to_mCh: Int64 {
        return Int64(self) / CMHToM
    }
    
    // 分 转 天
    var to_mCd: Int64 {
        return Int64(self) / CMDToM
    }
    
    // MARK: 时 转 ?
    // 时 转 天
    var to_hour_day: Int64 {
        return Int64(self) / CMDToH
    }
}
